Technical Q&A QA1179
Sending SCSI commands to storage devices


Q: ÉnÅ[ÉhÉfÉBÉXÉNÉhÉâÉCÉuǂǪÇÃëºÇÃÉXÉgÉåÅ[ÉWÉfÉoÉCÉXÇ… SCSI ÉRÉ}ÉìÉhÇëóÇÈïKóvǙdžÇËÇ‹Ç∑ÅBSCSITask User Client ǙǪÇÃÇΩÇflÇà API Ç»ÇÃÇæÇΔévǢNjÇ∑Ç™ÅAÉnÅ[ÉhÉfÉBÉXÉNÉhÉâÉCÉuÇ…ëŒÇµÇƒÇ±ÇÍÇégǮǧÇΔǵǃLJǧNjÇ≠çsÇ´Ç‹ÇπÇÒÅBâΩÇ™ãNǴǃǢÇÈÇÃÇ≈ǵÇÂǧǩÅH

A: ÉAÉbÉvÉãÇÕÅAÉAÉvÉäÉPÅ[ÉVÉáÉìÇ©ÇÁÉnÅ[ÉhÉfÉBÉXÉNÉhÉâÉCÉuÇ÷Çà SCSI ÉRÉ}ÉìÉhÇÃëóêMÇÉTÉ|Å[ÉgǵǃǢNjÇπÇÒÅBê›åvè„ÅAÉfÉoÉCÉXÇêßå‰Ç≈Ç´ÇÈÇÃÇÕÅAàÍìxÇ… 1 ǬÇÃò_óùÉÜÉjÉbÉgÉhÉâÉCÉoÇ…å¿ÇÁÇÍǃǢNjÇ∑ÅBÉAÉbÉvÉãÇ≈ÇÕÅAÉnÅ[ÉhÉfÉBÉXÉNÉhÉâÉCÉuÅAÇ®ÇÊÇ— INQUIRY ÉRÉ}ÉìÉhÇ©ÇÁñflÇ≥ÇÍÇÈé¸ï”ã@äÌÇÃÉ^ÉCÉvÇ…äÓÇ√Ç≠ëºÇà SCSI Architecture ModelÅiSAMÅjÉfÉoÉCÉXÇÃÇΩÇflÇ…ÅAÉJÅ[ÉlÉãì‡ÉhÉâÉCÉoÇíÒãüǵǃǢNjÇ∑ÅB

à»â∫ÇÕÅAÅuInside Mac OS X: Accessing Hardware from ApplicationsÅvÇ©ÇÁÇÃî≤êàÇ≈Ç∑ÅB

ÅwSCSI Architecture Model ÉtÉ@É~ÉäÇÕÅAÉJÅ[ÉlÉãì‡ò_óùÉÜÉjÉbÉgÉhÉâÉCÉoÇíÒãüǵNjÇ∑ÅBDZÇÍÇÁÇÃÉhÉâÉCÉoÇÕÅAîƒópÇà I/O óvãÅÇÅADZÇÍÇÁÇÃÉoÉXè„DždžÇËÅAâ∫ãLÇà 4 É^ÉCÉvÇÃé¸ï”ã@äÌÇà 1 ǬÇêÈåæÇ∑ÇÈÉfÉoÉCÉXÇ…å≈óLÇÃÉRÉ}ÉìÉhÇ…ïœä∑ǵNjÇ∑ÅB

  • SCSI ÉuÉçÉbÉNÉRÉ}ÉìÉhédólèÄãíÇÃÉuÉçÉbÉNÉXÉgÉåÅ[ÉWÉfÉoÉCÉXÇÕ$00ÅB
  • SCSI É}ÉãÉ`ÉÅÉfÉBÉAÉRÉ}ÉìÉhédólèÄãíÇÃÉ}ÉãÉ`ÉÅÉfÉBÉAÉfÉoÉCÉXÇÕ$05ÅB
  • SCSI ÉuÉçÉbÉNÉRÉ}ÉìÉhédólèÄãíÇÃåıé•ãCÉfÉoÉCÉXÇÕ$07ÅB
  • SCSI èkè¨ÉuÉçÉbÉNÉRÉ}ÉìÉhédólèÄãíÇÃèkè¨ÉuÉçÉbÉNÉRÉ}ÉìÉhÉfÉoÉCÉXÇÕ$0EÅB

ÉXÉLÉÉÉiÅAÉeÅ[ÉvÉhÉâÉCÉuÅAÉÅÉfÉBÉAÉ`ÉFÉìÉWÉÉǻǫëºÇÃé¸ï”ã@äÌÇÃÉ^ÉCÉvÇêÈåæÇ∑ÇÈÉfÉoÉCÉXDžǬǢǃÇÕÅASCSI Architecture Model ÉtÉ@É~ÉäÇÕÅASCSITaskDeviceInterface ÇΔåƒÇŒÇÍÇÈÉfÉoÉCÉXÉCÉìÉ^ÉtÉFÅ[ÉXÇíÒãüǵNjÇ∑ÅBDZÇÍÇ…ÇÊÇËÅAÉAÉvÉäÉPÅ[ÉVÉáÉìÇÕëŒè€ÉfÉoÉCÉXÇÃò_óùÉÜÉjÉbÉgÉhÉâÉCÉoÇ…Ç»ÇÈDZÇΔÇ™Ç≈Ç´Ç‹Ç∑Åx

ÉnÅ[ÉhÉfÉBÉXÉNÉhÉâÉCÉuÇÃé¸ï”ã@äÌÉ^ÉCÉvÇÕ 0x00 Ç≈džÇÈÇΩÇflÅAÉAÉbÉvÉãÇÕÅASCSITaskDeviceInterface Ç≈ÇÕÇ»Ç≠ÉJÅ[ÉlÉãì‡ÉhÉâÉCÉoÇíÒãüǵNjÇ∑ÅB

ATA ÉhÉâÉCÉuDžLJìØÇ∂å¥óùÇ™ìñǃÇÕÇ‹ÇËÇ‹Ç∑ÅBǬNjÇËÅAATA ÉtÉ@É~ÉäLJÅAÉAÉvÉäÉPÅ[ÉVÉáÉìÇ©ÇÁÉRÉ}ÉìÉhÇëóêMÇ∑ÇÈÇΩÇflÇÃÉfÉoÉCÉXÉCÉìÉ^ÉtÉFÅ[ÉXÇíÒãüǵǃǢNjÇπÇÒÅB

DZÇÃÉAÅ[ÉLÉeÉNÉ`ÉÉÇ…ÇÕ 2 ǬÇÃèdóvÇ»óòì_ǙdžÇËÇ‹Ç∑ÅBÉAÉvÉäÉPÅ[ÉVÉáÉìÇÕÅAÉfÉoÉCÉXÇÃèÛë‘Çé©óRÇ…ïœçXÇ∑ÇÈDZÇΔÇÕÇ≈ǴǻǢÇΩÇflÅAÉIÉyÉåÅ[ÉeÉBÉìÉOÉVÉXÉeÉÄÇ©ÇÁå©ÇΩÉfÉoÉCÉXÇÕèÌÇ…àÍä—ê´Ç™Ç†ÇËÅADZÇÍÇ…ÇÊÇËà¿íËê´Ç‡ó«Ç≠ǻǡǃǢNjÇ∑ÅBÇ≥ÇÁÇ…ÅAÉtÉ@ÉCÉãÉVÉXÉeÉÄÇÃÉAÉNÉZÉXãñâ¬ÇÉoÉCÉpÉXÇ∑ÇÈî\óÕÇêßå¿Ç∑ÇÈDZÇΔÇ…ÇÊÇËÅAÉfÅ[É^ÉZÉLÉÖÉäÉeÉBÇçÇÇflǃǢNjÇ∑ÅB

SCSI INQUIRY ÉRÉ}ÉìÉhÇ‹ÇΩÇÕ ATA IDENTIFY DEVICE ÉRÉ}ÉìÉhÇégǡǃéÊìæÇ∑ÇÈèÓïÒÇíPÇ…å©ÇΩÇ¢ÇæÇØÇ»ÇÁÅAǪÇÍÇÁÇÃèÓïÒÇÃëΩÇ≠ÇÕ I/O Registry Ç…ìoò^Ç≥ÇÍǃǢNjÇ∑ÅBÉAÉvÉäÉPÅ[ÉVÉáÉì /Developer/Applications/IORegistryExplorerÅAÇ‹ÇΩÇÕÉRÉ}ÉìÉhÉâÉCÉìÉcÅ[Éã ioreg ÇégǡǃÅAïKóvÇ»èÓïÒÇ™ I/O Registry DždžÇÈǩǫǧǩämîFÇ≈Ç´Ç‹Ç∑ÅBCDROMSample Ç‚ SCSITask User Client SDK ÇÃÉTÉìÉvÉãǻǫÅAÉvÉçÉpÉeÉBÇåüçıÅAéÊìæÇ∑ÇÈï˚ñ@Çé¶ÇµÇΩÉTÉìÉvÉãÉRÅ[ÉhLJdžÇËÇ‹Ç∑ÅB

I/O èàóùÇÃLJǧ 1 ǬÇÃï˚ñ@ÇΔǵǃÅA/dev DždžÇÈ BSD raw ÉfÉBÉXÉNÉfÉoÉCÉXÇégǧï˚ñ@ǙdžÇËÇ‹Ç∑ÅBDZÇÍDžǬǢǃÇÕÅAÅuAccessing Hardware from ApplicationsÅvÇà Working with Device Files for Storage Devices ÇΔǢǧÉ^ÉCÉgÉãÇÃèÕÇ≈ê‡ñæÇ≥ÇÍǃǢNjÇ∑ÅB

DZÇÃÉTÉìÉvÉãÇÕÅAAudioCDSample DždžÇËÇ‹Ç∑ÅB


[2002 îN 7 åé 25 ì˙]